﻿#region Librerias

using System.Security.Cryptography.X509Certificates;
using ESF.General;
using Olimpia.Objects.Security.Encryption;

#endregion


namespace ESF.SFT.FileUploader.Helpers
{
	public static class CertificateHelper
	{
		public static void CreateCMS (X509Certificate2 pClientCertificate, X509Certificate2 pEnterpriseCertificate, string pEntryFileName, string pResultFileName)
		{
			Pkcs7Cipher cipher = new Pkcs7Cipher();
			
			// Se puede llamar a X.Verify (); sobre los certificados para validarlos

			if (pClientCertificate == null)
			{
				throw new GenericInfoException (string.Format ("Debe configurar y seleccionar su Certificado Digital antes de hacer el envio de {0} que va en sobre digital", pEntryFileName));
			}


			if (pEnterpriseCertificate == null)
			{
				throw new GenericInfoException (string.Format ("Debe configurar y seleccionar un Certificado Digital de la Empresa antes de hacer el envio de {0} que va en sobre digital", pEntryFileName));
			}

			// Adicionar el certificado del destinatario para cifrar
			cipher.AddEncriptKey (pEnterpriseCertificate);

			//Adicionar el certificado privado para firmar
			cipher.AddSignatureKey(pClientCertificate);
			
			FileHelper.EnsureFolder (pResultFileName);

			cipher.EncryptFile (pEntryFileName, pResultFileName);	
		}
	}
}
